嗨咿,我是illumi,昨天講到用lottiefiles的既有動畫放到網頁上,今天來說說怎麼把各位動畫大師的大作,壓縮到最小放到網頁上!
方式一(官方推薦)
方式二
方式三:在 GitHub 倉庫下載 ZIP → 解壓 → 取得 /build/extension 裡的 .zxp → 使用 ZXP 安装器。
方式四(手動安裝):
bodymovin.zxp 放入 Adobe 的 CEP extensions 資料夾中(Windows 或 Mac 路徑不同)。.plist 加入 PlayerDebugMode=1,以啟用插件。方式五:使用 Adobe 官方第三方插件手動安裝流程參考說明。
方式六:使用 Homebrew-adobe 安裝(macOS):打開終端機輸入下方指令
brew tap danielbayley/adobe
brew cask install lottie
安裝後注意事項:
Edit > Preferences > Scripting & Expressions… 打勾「Allow Scripts to Write Files and Access Network」。Adobe After Effects > Preferences 裡做相同設定。
如果是沒學過AE的資深工程師們想要體驗,可以像我下面一樣(動畫師們請跳過):
在 AE 裡做一個動畫,常見的安全素材有:
✅ 可以用的:
❌ 不要用的:
| AE 特效類別 | 常見效果 | Lottie 支援度 | 備註 |
|---|---|---|---|
| Generate(產生) | Fill、Stroke | ✅ 支援 | 建議用 AE 的 Shape Layer 內建填色/描邊,最穩定 |
| Gradient Fill / Gradient Stroke | ⚠️ 部分支援 | 部分版本會轉換成多色漸層 path,不一定正確 | |
| Ramp(漸層)、Cell Pattern | ❌ 不支援 | 轉 JSON 會失效 | |
| Blur & Sharpen(模糊/銳利化) | Gaussian Blur、Fast Box Blur | ❌ 不支援 | 可用 AE keyframe 做透明度或 scale 模擬 |
| Sharpen | ❌ 不支援 | — | |
| Color Correction(顏色校正) | Hue/Saturation、Tint | ⚠️ 部分支援 | Tint 可轉換,Hue/Saturation 有些失效 |
| Levels、Curves | ❌ 不支援 | — | |
| Distort(扭曲/變形) | Transform(位置/旋轉/縮放) | ✅ 支援 | 層級屬性支援完整 |
| Corner Pin、Mesh Warp | ❌ 不支援 | 會被忽略 | |
| Roughen Edges | ❌ 不支援 | 常見失敗案例 | |
| Perspective(透視) | Drop Shadow | ❌ 不支援 | 建議改用 AE Shape Layer 的陰影模擬 |
| Bevel Alpha、Bevel Edges | ❌ 不支援 | — | |
| Stylize(風格化) | Glow | ❌ 不支援 | 常見失敗案例 |
| Mosaic、Posterize | ❌ 不支援 | — | |
| Simulation(模擬) | CC Particle World、Particular | ❌ 不支援 | 粒子完全無法輸出 |
| Time(時間) | Time Remap | ❌ 不支援 | 可用 keyframe 曲線模擬 |
| Transition(轉場) | Linear Wipe | ❌ 不支援 | 建議用 Mask 動畫代替 |
| Text(文字動畫器) | Source Text | ✅ 支援 | 基本文字、透明度、位置、旋轉都支援 |
| Animator(Character Offset 等) | ⚠️ 部分支援 | 有些複雜屬性不支援 | |
| 3D(3D 特效/空間) | 3D Layer、Camera、Lights | ❌ 不支援 | Lottie 完全不處理 3D 資訊 |
| Expressions(表達式) | wiggle、loopOut | ⚠️ 部分支援 | 簡單數值可 Bake 到 keyframe |
| 複雜 JS 表達式 | ❌ 不支援 | 需轉換成 keyframe 才能輸出 |
.json 檔,這就是 Lottie 動畫!在 網頁裡使用 Lottie:
Web 使用安裝方式:
npm 安裝:
npm install lottie-web
Bower 安裝:
bower install bodymovin
CDN 使用:可透過 jsDelivr 或 CDNJS 引入 lottie.js。
簡易範例:
<script src="js/lottie.js" type="text/javascript"></script>
<script>
lottie.loadAnimation({
container: document.getElementById('lottie'), // 指定容器
renderer: 'svg',
loop: true,
autoplay: true,
path: 'animation.json' // Lottie JSON 路徑
});
</script>
前面提到 Bodymovin 不支援 PNG 與影片檔,所以如果你要做的是「透明的動態素材」,例如煙霧、火焰、實拍人物,就不能直接輸出成 Lottie。
那該怎麼辦呢?
答案就是 輸出透明影片(WebM ) 再放到網頁上!這會是下一篇的重點。